Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh-125884: Support breakpoint on functions with annotations #125892

Merged
merged 4 commits into from
Oct 23, 2024

Conversation

gaogaotiantian
Copy link
Member

@gaogaotiantian gaogaotiantian commented Oct 23, 2024

close #125885 as well.

Two things are fixed:

  1. The regex for a function definition is improved to include generics
  2. We do not rely on the function code object being the first const in the compiled code object. We search for it.

@gaogaotiantian gaogaotiantian changed the title Support breakpoint on functions with annotations gh-125884: Support breakpoint on functions with annotations Oct 23, 2024
@gaogaotiantian gaogaotiantian added needs backport to 3.12 bug and security fixes needs backport to 3.13 bugs and security fixes labels Oct 23, 2024
Lib/pdb.py Outdated Show resolved Hide resolved
@@ -363,6 +363,42 @@ def test_pdb_breakpoint_commands():
4
"""

def test_pdb_breakpoint_on_annotated_function_def():
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are there tests for functions with decorators?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not really. What's the expected behavior? We can't resolve the decorator in pdb, we will only add the breakpoint inside the decorated function.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, that's not true.. It depends on whether the function is in the name space. If it's already in the namespace, we will set the breakpoint in the decorator.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know what the expected behaviour would be. Still interesting what the behaviour is.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So if it's not compiled, we will be searching based on source code, and we will break inside the function. If it is compiled, then the name in the name space will point to a decorated function, and the code object would be the return value of the decorator, so probably a wrapper.

Lib/pdb.py Outdated Show resolved Hide resolved
Lib/pdb.py Show resolved Hide resolved
Co-authored-by: Irit Katriel <[email protected]>
@gaogaotiantian gaogaotiantian merged commit 8f2c0f7 into python:main Oct 23, 2024
35 checks passed
@gaogaotiantian gaogaotiantian deleted the pdb-support-generic-def branch October 23, 2024 22:04
@miss-islington-app
Copy link

Thanks @gaogaotiantian for the PR 🌮🎉.. I'm working now to backport this PR to: 3.12, 3.13.
🐍🍒⛏🤖

@miss-islington-app
Copy link

Sorry, @gaogaotiantian, I could not cleanly backport this to 3.13 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 8f2c0f7a03b71485b5635cb47c000e4e8ace8800 3.13

@miss-islington-app
Copy link

Sorry, @gaogaotiantian, I could not cleanly backport this to 3.12 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 8f2c0f7a03b71485b5635cb47c000e4e8ace8800 3.12

gaogaotiantian added a commit to gaogaotiantian/cpython that referenced this pull request Oct 23, 2024
@bedevere-app
Copy link

bedevere-app bot commented Oct 23, 2024

GH-125902 is a backport of this pull request to the 3.13 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.13 bugs and security fixes label Oct 23, 2024
@bedevere-app
Copy link

bedevere-app bot commented Oct 23, 2024

GH-125903 is a backport of this pull request to the 3.12 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.12 bug and security fixes label Oct 23, 2024
gaogaotiantian added a commit that referenced this pull request Oct 23, 2024
#125903)

* [3.12] gh-125884: Support breakpoint on functions with annotations (GH-125892)
(cherry picked from commit 8f2c0f7)

Co-authored-by: Tian Gao <[email protected]>
gaogaotiantian added a commit that referenced this pull request Oct 23, 2024
#125902)

[3.13] gh-125884: Support breakpoint on functions with annotations (GH-125892)
(cherry picked from commit 8f2c0f7)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

pdb fails when setting a breakpoint to function names with generics-type annotations
2 participants